RAIS  3.2
C:/Projekte/RAIS/UI Common/DynamicMaskManagement.cs
Go to the documentation of this file.
00001 
00028 using System;
00029 using System.Collections;
00030 using System.Collections.Generic;
00031 using System.Data;
00032 using System.Globalization;
00033 using System.Text;
00034 using System.Web.UI;
00035 using System.Web.UI.HtmlControls;
00036 using System.Web.UI.WebControls;
00037 
00038 using RAIS.ApplicationLogicLayer;
00039 using RAIS.Common.DynamicMaskManagement;
00040 using RAIS.Common.TableManagement;
00041 using RAIS.Common.UserManagement;
00042 using PageAccessRights = System.Collections.Generic.Dictionary<string, RAIS.UI.Common.UserManagement.AccessRight>;
00043 using ConsistencyChecks = System.Collections.Generic.Dictionary<string, RAIS.Common.DynamicMaskManagement.ConsistencyCheck>;
00044 using RecordTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.DynamicMaskManagement.ConsistencyCheck.RecordTypeData>;
00045 
00046 namespace RAIS.UI.Common
00047 {
00051         public class DynamicMaskManagement
00052     {
00053         //*********************************************************************
00054         #region Enums
00055         public enum FormMode
00056                 {
00057             Add,
00058             Delete,
00059                         Edit,
00060             View,
00061             UndoAdd,
00062                         Query
00063         }
00064 
00065                 public enum ApplyPhase
00066                 { 
00067                         Check,
00068                         Apply
00069                 }
00070         #endregion
00071         //*********************************************************************
00072         #region Initialize Controls Methods
00073 
00079                 public static void AddFormLinksControls(System.Web.UI.HtmlControls.HtmlGenericControl control1, DynamicMaskData dynamicMaskData, FormMode formMode, EventHandler onClickHandler)
00080         {
00081             int startLinkID = 0;
00082             control1.Controls.Clear();
00083             Panel control = new Panel();
00084             control.Style["width"] = "100%";
00085 
00086             if (dynamicMaskData.DynamicMasks.Count > startLinkID)
00087             {
00088                                 int maxValue = (dynamicMaskData.IsMultipaged) 
00089                                         ? dynamicMaskData.DynamicMasks.Count
00090                                         : 1;
00091                                 for (int i = startLinkID; i < maxValue; i++)
00092                 {
00093                     if (dynamicMaskData.DynamicMasks[i].Type == DynamicMask.DynamicMaskType.ListWithFilter)
00094                         continue;
00095 
00096                     //if (dynamicMaskData.DynamicMasks[i].Table.Type==RAIS.Common.TableManagement.Table.TableType.Authorization
00097                     //    && dynamicMaskData.DynamicMasks[i].Table.Fields.Count==1)
00098                     //    continue;
00099 
00100                     if (control.Controls.Count > 0)
00101                     {
00102                         Label emptyLabel = new Label();
00103                         emptyLabel.Text = "&nbsp" + "|" + "&nbsp";
00104                         control.Controls.Add(emptyLabel);
00105                     }
00106 
00107                     Label lblFormName = new Label();
00108                     HtmlControl nobr = new HtmlGenericControl("nobr");
00109                     lblFormName.Text = dynamicMaskData.DynamicMasks[i].Name;
00110                     
00111                     lblFormName.Font.Bold = (i == dynamicMaskData.TabID);
00112                     
00113                     //if (i == dynamicMaskData.TabID || dynamicMaskData.IsAddRow)
00114                     if (i == dynamicMaskData.TabID
00115                         || formMode == FormMode.Add
00116                         || formMode == FormMode.Edit)
00117                     {
00118                         nobr.Controls.Add(lblFormName);
00119                         control.Controls.Add(nobr);
00120                     }
00121                     else
00122                     {
00123                         HtmlAnchor link = new HtmlAnchor();
00124                         link.ID = "Link" + i.ToString();
00125                         dynamicMaskData.DynamicMasks[i].ControlName = link.ID;
00126                         link.Name = dynamicMaskData.DynamicMasks[i].Name;
00127                         link.ServerClick += onClickHandler;
00128                         link.Controls.Add(lblFormName);
00129                         nobr.Controls.Add(link);
00130                         control.Controls.Add(nobr);
00131                     }
00132                 }
00133             }
00134             control1.Controls.Add(control);
00135         }
00143         public static void InitializeNameList(ListBox list, DynamicMaskData dynamicMaskData, FormMode currentFormMode, int initialSelectedIndex)
00144                 {
00145             bool setFirstElement = (list.SelectedItem == null);
00146             bool firstElement = true;
00147             int selectedItemKey = (list.SelectedItem == null) ? 0 : int.Parse(list.SelectedItem.Value);
00148             int selectedIndex = list.SelectedIndex;
00149 
00150                         if (dynamicMaskData != null)
00151                         {
00152                                 list.Items.Clear();
00153                 foreach (KeyValuePair<int, string> fieldValue in dynamicMaskData.SingleListFieldValues)
00154                 {
00155                     ListItem listItem = new ListItem(fieldValue.Value, fieldValue.Key.ToString());
00156                     if (currentFormMode != FormMode.Add
00157                         && currentFormMode != FormMode.Delete
00158                         && (setFirstElement && firstElement
00159                             || (selectedItemKey != 0) && (fieldValue.Key == selectedItemKey)))
00160                     {
00161                         listItem.Selected = true;
00162                     }
00163 
00164                     list.Items.Add(listItem);
00165                     
00166                     firstElement = false;
00167                 }
00168 
00169                 if (currentFormMode == FormMode.Add)
00170                 {
00171                     ListItem listItem = new ListItem(string.Empty, 0.ToString());
00172                     listItem.Selected = true;
00173                     list.Items.Add(listItem);
00174                 }
00175 
00176                 if (currentFormMode == FormMode.Delete)
00177                 {
00178                     selectedIndex = (selectedIndex >= list.Items.Count) ? list.Items.Count - 1 : selectedIndex;
00179                                         if (selectedIndex != -1)
00180                                                 list.Items[selectedIndex].Selected = true;
00181                 }
00182 
00183                                 if (currentFormMode == FormMode.UndoAdd)
00184                                 {
00185                                         if (initialSelectedIndex != -1)
00186                                                 list.Items[initialSelectedIndex].Selected = true;
00187                                 }
00188 
00189                 UI.Common.PageManagement.InitializeListboxTooltips(list);
00190             }
00191                 }
00198                 public static void AddFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, EventHandler selectHandler)
00199                 {
00200                         int controlNumber = 0;
00201                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
00202                         {
00203                                 DynamicMaskFilterData filterData = kvp.Value;
00204                                 DynamicMaskFilter.FilterType type = filterData.DynamicMaskFilter.Type;
00205 
00206                                 if (filterData.DynamicMaskFilter.VisibleOnForm)
00207                                 {
00208                                         // Row
00209                                         HtmlTableRow row = new HtmlTableRow();
00210 
00211                                         // Col1
00212                                         HtmlTableCell col1 = new HtmlTableCell();
00213                                         col1.Attributes[Constants.ATTRIBUTE_CLASS_NAME] = Constants.CSS_CLASS_FILTER_LABEL;
00214 
00215                                         Label filterLabel = new Label();
00216                                         filterLabel.Font.Bold =
00217                                                 (dynamicMaskData.DynamicMask.Type == DynamicMask.DynamicMaskType.ReportMask
00218                                                         && filterData.DynamicMaskFilter.UseInQuery);
00219                                         filterLabel.Text = (type == DynamicMaskFilter.FilterType.Lookup) 
00220                                                 ? filterData.DynamicMaskFilter.Name
00221                                                 : RAIS.Common.Constants.DATE_FROM_LABEL_TEXT;
00222                                         col1.Controls.Add(filterLabel);
00223                                         row.Cells.Add(col1);
00224 
00225                                         // Col2
00226                                         HtmlTableCell col2 = new HtmlTableCell();
00227 
00228                                         if (type == DynamicMaskFilter.FilterType.Lookup)
00229                                         {
00230                                                 DropDownList ddList = new DropDownList();
00231                                                 ddList.ID = "ddl" + (controlNumber++).ToString();
00232                                                 filterData.ControlName = ddList.ID;
00233                                                 if (filterData.LookupValues != null)
00234                                                 {
00235                                                         int selectedKey = 0;
00236                                                         if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME)
00237                                                                 selectedKey = dynamicMaskData.SelectedFacilityID;
00238                                                         if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.DEPARTMENT_PARAMETER_NAME)
00239                                                                 selectedKey = dynamicMaskData.SelectedDepartmentID;
00240                                                         InitializeFilterDropDownList(ddList, filterData, selectedKey);
00241                                                 }
00242                                                 ddList.CssClass = Constants.CSS_CLASS_FILTER_DROPDOWN;
00243                                                 if (filterData.ChildFilters != null
00244                                                         || filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME)
00245                                                 {
00246                                                         ddList.AutoPostBack = true;
00247                                                         ddList.SelectedIndexChanged += selectHandler;
00248                                                 }
00249                                                 filterLabel.AssociatedControlID = ddList.ID;
00250                                                 col2.Controls.Add(ddList);
00251                                         }
00252 
00253                                         if (type == DynamicMaskFilter.FilterType.DatesRage)
00254                                         {
00255                                                 TextBox textBoxFrom = new TextBox();
00256                                                 textBoxFrom.ID = "txt" + (controlNumber++).ToString();
00257                                                 textBoxFrom.Text = filterData.DateFrom.ToShortDateString();
00258                                                 filterData.ControlName = textBoxFrom.ID;
00259                                                 filterLabel.AssociatedControlID = textBoxFrom.ID;
00260                                                 col2.Controls.Add(textBoxFrom);
00261 
00262                                                 Label dateFromFormatLabel = new Label();
00263                                                 dateFromFormatLabel.Text = GetNationalDateFormatString(false);
00264                                                 col2.Controls.Add(dateFromFormatLabel);
00265 
00266                                                 Label dateUntilLabel = new Label();
00267                                                 dateUntilLabel.Text = "&nbsp&nbsp&nbsp&nbsp&nbsp" + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT + "&nbsp";
00268                                                 dateUntilLabel.Font.Bold = true;
00269                                                 col2.Controls.Add(dateUntilLabel);
00270 
00271                                                 TextBox textBoxUntil = new TextBox();
00272                                                 textBoxUntil.ID = "txt" + (controlNumber++).ToString() + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT;
00273                                                 textBoxUntil.Text = filterData.DateUntil.ToShortDateString();
00274                                                 filterData.ControlUntilName = textBoxUntil.ID;
00275                                                 col2.Controls.Add(textBoxUntil);
00276 
00277                                                 Label dateUntilFormatLabel = new Label();
00278                                                 dateUntilFormatLabel.Text = GetNationalDateFormatString(false);
00279                                                 col2.Controls.Add(dateUntilFormatLabel);
00280                                         }
00281 
00282                                         row.Cells.Add(col2);
00283                                         table.Rows.Add(row);
00284                                 }
00285                         }
00286                 }
00287 
00288         public static void AddFilterControlsWithoutChildFilter(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, EventHandler selectHandler)
00289         {
00290             int controlNumber = 0;
00291             foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
00292             {
00293                 DynamicMaskFilterData filterData = kvp.Value;
00294                 DynamicMaskFilter.FilterType type = filterData.DynamicMaskFilter.Type;
00295 
00296                 if (filterData.DynamicMaskFilter.VisibleOnForm)
00297                 {
00298                     // Row
00299                     HtmlTableRow row = new HtmlTableRow();
00300 
00301                     // Col1
00302                     HtmlTableCell col1 = new HtmlTableCell();
00303                     col1.Attributes[Constants.ATTRIBUTE_CLASS_NAME] = Constants.CSS_CLASS_FILTER_LABEL;
00304 
00305                     Label filterLabel = new Label();
00306                     filterLabel.Font.Bold = (dynamicMaskData.DynamicMask.Type == DynamicMask.DynamicMaskType.ReportMask
00307                         && filterData.DynamicMaskFilter.UseInQuery);
00308                     filterLabel.Text = (type == DynamicMaskFilter.FilterType.Lookup)
00309                         ? filterData.DynamicMaskFilter.Name
00310                         : RAIS.Common.Constants.DATE_FROM_LABEL_TEXT;
00311                     col1.Controls.Add(filterLabel);
00312                     row.Cells.Add(col1);
00313 
00314                     // Col2
00315                     HtmlTableCell col2 = new HtmlTableCell();
00316 
00317                     if (type == DynamicMaskFilter.FilterType.Lookup)
00318                     {
00319                         DropDownList ddList = new DropDownList();
00320                         ddList.ID = "ddl" + (controlNumber++).ToString();
00321                         filterData.ControlName = ddList.ID;
00322                         if (filterData.LookupValues != null)
00323                         {
00324                             int selectedKey = 0;
00325                             if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME)
00326                                 selectedKey = dynamicMaskData.SelectedFacilityID;
00327                             if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.DEPARTMENT_PARAMETER_NAME)
00328                                 selectedKey = dynamicMaskData.SelectedDepartmentID;
00329                             InitializeFilterDropDownList(ddList, filterData, selectedKey);
00330                         }
00331                         ddList.CssClass = Constants.CSS_CLASS_FILTER_DROPDOWN;
00332                         if (filterData.ChildFilters != null
00333                             || filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME)
00334                         {
00335                             ddList.AutoPostBack = true;
00336                             ddList.SelectedIndexChanged += selectHandler;
00337                         }
00338                         filterLabel.AssociatedControlID = ddList.ID;
00339                         col2.Controls.Add(ddList);
00340                     }
00341 
00342                     if (type == DynamicMaskFilter.FilterType.DatesRage)
00343                     {
00344                         TextBox textBoxFrom = new TextBox();
00345                         textBoxFrom.ID = "txt" + (controlNumber++).ToString();
00346                         textBoxFrom.Text = filterData.DateFrom.ToShortDateString();
00347                         filterData.ControlName = textBoxFrom.ID;
00348                         filterLabel.AssociatedControlID = textBoxFrom.ID;
00349                         col2.Controls.Add(textBoxFrom);
00350 
00351                         Label dateFromFormatLabel = new Label();
00352                         dateFromFormatLabel.Text = GetNationalDateFormatString(false);
00353                         col2.Controls.Add(dateFromFormatLabel);
00354 
00355                         Label dateUntilLabel = new Label();
00356                         dateUntilLabel.Text = "&nbsp&nbsp&nbsp&nbsp&nbsp" + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT + "&nbsp";
00357                         dateUntilLabel.Font.Bold = true;
00358                         col2.Controls.Add(dateUntilLabel);
00359 
00360                         TextBox textBoxUntil = new TextBox();
00361                         textBoxUntil.ID = "txt" + (controlNumber++).ToString() + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT;
00362                         textBoxUntil.Text = filterData.DateUntil.ToShortDateString();
00363                         filterData.ControlUntilName = textBoxUntil.ID;
00364                         col2.Controls.Add(textBoxUntil);
00365 
00366                         Label dateUntilFormatLabel = new Label();
00367                         dateUntilFormatLabel.Text = GetNationalDateFormatString(false);
00368                         col2.Controls.Add(dateUntilFormatLabel);
00369                     }
00370 
00371                     if (!filterData.DynamicMaskFilter.UseInQuery)
00372                         row.Visible = false;
00373                     row.Cells.Add(col2);
00374                     table.Rows.Add(row);
00375                 }
00376             }
00377         }
00378 
00379                 public static void InitializeFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData)
00380                 {
00381                         int rowNumber = 0;
00382                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
00383                         {
00384                                 DynamicMaskFilterData filterData = kvp.Value;
00385                                 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.Lookup)
00386                                 {
00387                                         DropDownList ddList = (DropDownList)table.Rows[rowNumber++].Cells[1].Controls[0];
00388                                         InitializeFilterDropDownList(ddList, filterData, 0);
00389                                 }
00390 
00391                                 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.DatesRage)
00392                                 {
00393                                         TextBox textBoxFrom = (TextBox)table.Rows[rowNumber++].Cells[1].Controls[0];
00394                                         textBoxFrom.Text = filterData.DateFrom.ToString();
00395                                         TextBox textBoxUntil = (TextBox)table.Rows[rowNumber++].Cells[1].Controls[3];
00396                                         textBoxUntil.Text = filterData.DateUntil.ToString();
00397                                 }
00398                         }
00399                 }
00400 
00401                 public static void InitializeChildFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, object sender)
00402                 {
00403                         DynamicMaskFilterData filterData = FindFilterDataByControlName(dynamicMaskData, sender);
00404                         if (filterData != null)
00405                         {
00406                                 if (filterData.ChildFilters != null)
00407                                 {
00408                                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in filterData.ChildFilters)
00409                                         {
00410                                                 DynamicMaskFilterData childFilterData = kvp.Value;
00411 
00412                                                 int childFilterRowNumber = GetFilterRowNumber(dynamicMaskData, childFilterData);
00413 
00414                                                 DropDownList ddList = (DropDownList)table.Rows[childFilterRowNumber].Cells[1].Controls[0];
00415                                                 InitializeFilterDropDownList(ddList, childFilterData, 0);
00416                                         }
00417                                 }
00418                         }
00419                 }
00420 
00421                 public static void InitializeFilterDropDownList(DropDownList ddl, DynamicMaskFilterData filterData, int selectedKey)
00422                 {
00423 
00424                         ddl.Items.Clear();
00425                         ddl.Items.Add(new ListItem("", "0"));
00426                         ddl.Items[ddl.Items.Count - 1].Selected = (selectedKey == 0);
00427                         if (filterData.LookupValues != null)
00428                         {
00429                                 foreach (KeyValuePair<int, string> lookupValue in filterData.LookupValues)
00430                                 {
00431                                         ddl.Items.Add(new ListItem(lookupValue.Value, lookupValue.Key.ToString()));
00432                                         ddl.Items[ddl.Items.Count - 1].Selected = (selectedKey == lookupValue.Key);
00433                                 }
00434                         }
00435                 }
00442                 public static void InitializeFilterObjectsFromFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData)
00443                 {
00444                         int rowNumber = 0;
00445 
00446                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
00447                         {
00448                                 DynamicMaskFilterData filterData = kvp.Value;
00449 
00450                                 if (filterData.DynamicMaskFilter.VisibleOnForm)
00451                                 {
00452                                         if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.Lookup)
00453                                         {
00454                                                 DropDownList ddList = (DropDownList)table.Rows[rowNumber].Cells[1].Controls[0];
00455                                                 if (ddList.SelectedItem != null)
00456                                                 {
00457                                                         filterData.CurrentLookupValue = int.Parse(ddList.SelectedItem.Value);
00458                                                         filterData.CurrentLookupText = ddList.SelectedItem.Text;
00459                                                 }
00460                                         }
00461 
00462                                         if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.DatesRage)
00463                                         {
00464                                                 TextBox textBoxFrom = (TextBox)table.Rows[rowNumber].Cells[1].Controls[0];
00465                                                 filterData.DateFrom = DateTime.Parse(textBoxFrom.Text);
00466                                                 TextBox textBoxUntil = (TextBox)table.Rows[rowNumber].Cells[1].Controls[3];
00467                                                 filterData.DateUntil = DateTime.Parse(textBoxUntil.Text);
00468                                         }
00469 
00470                                         rowNumber++;
00471                                 }
00472                         }
00473                 }
00474 
00475                 public static void InitializeListItems(GridView gridView, DynamicMaskData dynamicMaskData)
00476                 {
00477                         string translationContext = gridView.Page.ToString();
00478 
00479                         gridView.DataSource = dynamicMaskData.DataSet.Tables[0];
00480                         gridView.Columns.Clear();
00481 
00482                         //ButtonField selectField = new ButtonField();
00483                         //selectField.ButtonType = ButtonType.Link;
00484                         //selectField.Text = "Select";
00485                         //selectField.CommandName = "Select";
00486                         //gridView.Columns.Add(selectField);
00487 
00488                         int columnNumber = 0;
00489                         foreach (DataColumn column in dynamicMaskData.DataSet.Tables[0].Columns)
00490                         {
00491 
00492                                 if (column.ColumnName != RAIS.Common.Constants.TIME_STAMP_FIELD_NAME)
00493                                 {
00494                                         if (columnNumber == 1)
00495                                         {
00496                                                 ButtonField field = new ButtonField();
00497                                                 field.ButtonType = ButtonType.Link;
00498                                                 field.HeaderText = ApplicationLogicLayer.Localisation.Translate(column.Caption
00499                                                         , translationContext
00500                                                         , RAIS.Common.Constants.DEFAULT_LANGUAGE
00501                                                         , dynamicMaskData.CurrentUser.Language);
00502                                                 field.DataTextField = column.ColumnName;
00503                                                 field.SortExpression = column.ColumnName;
00504                                                 field.CommandName = "Select";
00505                                                 gridView.Columns.Add(field);
00506                                         }
00507                                         else
00508                                         {
00509                                                 BoundField field = new BoundField();
00510                         if (columnNumber == 0)                    // don´t translate column 0 - it is PK .. ID and it is invisible
00511                             field.HeaderText = column.Caption;
00512                         else
00513                             field.HeaderText = ApplicationLogicLayer.Localisation.Translate(column.Caption
00514                                 , translationContext
00515                                 , RAIS.Common.Constants.DEFAULT_LANGUAGE
00516                                 , dynamicMaskData.CurrentUser.Language);
00517 
00518                                                 field.DataField = column.ColumnName;
00519                                                 field.SortExpression = column.ColumnName;
00520                                                 gridView.Columns.Add(field);
00521                                         }
00522                                         columnNumber++;
00523                                 }
00524                         }
00525                         if (dynamicMaskData.DataSet.Tables[0].Columns.Contains(RAIS.Common.Constants.TIME_STAMP_FIELD_NAME)
00526                 && dynamicMaskData.DynamicMask.Table.QueryName!=dynamicMaskData.DynamicMask.Table.Name)
00527                         {
00528                                 DataColumn column = dynamicMaskData.DataSet.Tables[0].Columns[RAIS.Common.Constants.TIME_STAMP_FIELD_NAME];
00529                                 BoundField field = new BoundField();
00530                                 field.HeaderText = ApplicationLogicLayer.Localisation.Translate(column.Caption
00531                                         , translationContext
00532                                         , RAIS.Common.Constants.DEFAULT_LANGUAGE
00533                                         , dynamicMaskData.CurrentUser.Language);
00534                                 field.DataField = column.ColumnName;
00535                                 field.SortExpression = column.ColumnName;
00536                                 gridView.Columns.Add(field);
00537                                 columnNumber++;
00538                         }
00539                         gridView.Columns[0].Visible = false;
00540 
00541                         //ButtonField editField = new ButtonField();
00542                         //editField.ButtonType = ButtonType.Link;
00543                         //editField.Text = "View";
00544                         //editField.CommandName = "View";
00545                         //gridView.Columns.Add(editField);
00546                         
00547                         gridView.DataBind();
00548                 }
00549 
00550                 public static ConsistencyChecks GetConsistencyChecksByDynamicMask(Page page, DynamicMask dynamicMask, bool reset)
00551                 {
00552                         string tagName = RAIS.UI.Common.Constants.CONSISTENCY_CHECKS_PARAMETERS_TAG;
00553                         ConsistencyChecks consistencyChecks = new Dictionary<string, ConsistencyCheck>();
00554 
00555                         if (reset)
00556                                 page.Session[tagName] = null;
00557 
00558                         if (dynamicMask != null)
00559                         {
00560                                 if (page.Session[tagName] == null)
00561                                 {
00562                                         consistencyChecks = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetConsistencyChecksByDynamicMask(dynamicMask);
00563                                         page.Session[tagName] = consistencyChecks;
00564                                 }
00565                                 else
00566                                 {
00567                                         consistencyChecks = (ConsistencyChecks)page.Session[tagName];
00568                                 }
00569                         }
00570                         return consistencyChecks;
00571                 }
00572 
00573                 public static void InitializeConsistencyCheckListByDynamicMask(DropDownList list, DynamicMask dynamicMask)
00574                 {
00575                         ConsistencyChecks consistencyChecks = GetConsistencyChecksByDynamicMask(list.Page, dynamicMask, true);
00576 
00577                         string[] consistencyChecksNames = new string[consistencyChecks.Keys.Count];
00578                         consistencyChecks.Keys.CopyTo(consistencyChecksNames, 0);
00579 
00580                         UI.Common.Controls.InitializeList(list.Items, consistencyChecksNames);
00581                 }
00582 
00583                 public static RecordTypes GetRecordTypes(Page page, bool reset)
00584                 {
00585                         string tagName = RAIS.UI.Common.Constants.RECORD_TYPES_TAG;
00586                         RecordTypes recordTypes = new Dictionary<string, ConsistencyCheck.RecordTypeData>();
00587 
00588                         if (reset)
00589                                 page.Session[tagName] = null;
00590 
00591                         if (page.Session[tagName] == null)
00592                         {
00593                                 recordTypes = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetRecordTypes();
00594                                 page.Session[tagName] = recordTypes;
00595                         }
00596                         else
00597                         {
00598                                 recordTypes = (RecordTypes)page.Session[tagName];
00599                         }
00600 
00601                         return recordTypes;
00602                 }
00603 
00604                 public static void InitializeRecordTypesList(DropDownList list, string selection)
00605                 {
00606                         InitializeRecordTypesList(list);
00607 
00608                         // Selected record type could be empty, so add empty row
00609                         list.Items.Insert(0, new ListItem(string.Empty, 0.ToString()));
00610 
00611                         // Select current value
00612                         if (list.SelectedItem != null)
00613                                 list.SelectedItem.Selected = false;
00614                         ListItem listItem = list.Items.FindByText(selection);
00615                         if (listItem != null)
00616                                 listItem.Selected = true;
00617                         else
00618                                 list.SelectedIndex = 0;
00619                 }
00620 
00621                 public static void InitializeRecordTypesList(DropDownList list)
00622                 {
00623                         RecordTypes recordTypes = GetRecordTypes(list.Page, true);
00624 
00625                         string[] recordTypeNames = new string[recordTypes.Keys.Count];
00626                         recordTypes.Keys.CopyTo(recordTypeNames, 0);
00627 
00628                         UI.Common.Controls.InitializeList(list.Items, recordTypeNames);
00629                 }
00630 
00631                 public static Dictionary<string, int> GetNonComplianceMajorCategories(Page page, bool reset)
00632                 {
00633                         string tagName = RAIS.UI.Common.Constants.NON_COMPLIANCE_MAJOR_CATEGORIES_TAG;
00634                         Dictionary<string, int> majorCategories = new Dictionary<string, int>();
00635 
00636                         if (reset)
00637                                 page.Session[tagName] = null;
00638 
00639                         if (page.Session[tagName] == null)
00640                         {
00641                                 majorCategories = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetNonComplianceMajorCategories();
00642                                 page.Session[tagName] = majorCategories;
00643                         }
00644                         else
00645                         {
00646                                 majorCategories = (Dictionary<string, int>)page.Session[tagName];
00647                         }
00648 
00649                         return majorCategories;
00650                 }
00651 
00652                 public static void InitializeNonComplianceMajorCategories(DropDownList list)
00653                 {
00654                         Dictionary<string, int> majorCategories = GetNonComplianceMajorCategories(list.Page, true);
00655 
00656                         string[] majorCategoriesNames = new string[majorCategories.Keys.Count];
00657                         majorCategories.Keys.CopyTo(majorCategoriesNames, 0);
00658 
00659                         UI.Common.Controls.InitializeList(list.Items, majorCategoriesNames);
00660 
00661                         // Selected non-compliance major category could be empty, so add empty row
00662                         list.Items.Insert(0, new ListItem(string.Empty, 0.ToString()));
00663                 }
00664 
00665                 public static Dictionary<string, int> GetNonComplianceCategories(Page page, int majorCategoryID, bool reset)
00666                 {
00667                         string tagName = RAIS.UI.Common.Constants.NON_COMPLIANCE_CATEGORIES_TAG;
00668                         Dictionary<string, int> nonComplianceCategories = new Dictionary<string, int>();
00669 
00670                         if (reset)
00671                                 page.Session[tagName] = null;
00672 
00673                         if (page.Session[tagName] == null)
00674                         {
00675                                 nonComplianceCategories = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetNonComplianceCategoriesByMajorCategoryID(majorCategoryID);
00676                                 page.Session[tagName] = nonComplianceCategories;
00677                         }
00678                         else
00679                         {
00680                                 nonComplianceCategories = (Dictionary<string, int>)page.Session[tagName];
00681                         }
00682 
00683                         return nonComplianceCategories;
00684                 }
00685 
00686                 public static void InitializeNonComplianceCategories(DropDownList list, int majorCategory)
00687                 {
00688                         Dictionary<string, int> nonComplianceCategories = GetNonComplianceCategories(list.Page, majorCategory, true);
00689 
00690                         string[] nonComplianceCategoriesNames = new string[nonComplianceCategories.Keys.Count];
00691                         nonComplianceCategories.Keys.CopyTo(nonComplianceCategoriesNames, 0);
00692 
00693                         UI.Common.Controls.InitializeList(list.Items, nonComplianceCategoriesNames);
00694 
00695                         // Selected non-compliance category could be empty, so add empty row
00696                         list.Items.Insert(0, new ListItem(string.Empty, 0.ToString()));
00697                 }
00698                 #endregion
00699         //*********************************************************************
00700         #region Methods for Communication with ALL
00701 
00710                 public static DynamicMaskData GetDynamicMaskData(int maskID, int tabID, int parentID, UserData currentUser, bool isNewRow)
00711                 {
00712                         return RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetDynamicMaskData(maskID, tabID, parentID, currentUser, isNewRow);
00713                 }
00720         public static void GetSingleListFieldValues(DynamicMaskData dynamicMaskData)
00721         {
00722             RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetSingleListFieldValues(dynamicMaskData);
00723         }
00732         public static List<FieldData> GetCurrentRowFieldsValues(DynamicMaskData dynamicMaskData, int parentID, int rowID)
00733         {
00734             return RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetCurrentRowFieldsValues(dynamicMaskData, parentID, rowID);
00735         }
00742         public static bool GetLookupValues(DynamicMaskData dynamicMaskData, ref string returnMessage)
00743                 {
00744             return RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetLookupValues(dynamicMaskData, ref returnMessage);
00745                 }
00751         public static void CreateNewRecord(DynamicMaskData dynamicMaskData)
00752                 {
00753                         RAIS.ApplicationLogicLayer.DynamicMaskManagement.CreateNewRecord(dynamicMaskData);
00754                 }
00760                 public static bool ValidateConsistencyChecks(DynamicMaskData dynamicMaskData, ref string returnMessage)
00761                 {
00762                         return RAIS.ApplicationLogicLayer.DynamicMaskManagement.ValidateConsistencyChecks(dynamicMaskData, ref returnMessage);
00763                 }
00769                 public static bool SaveChanges(DynamicMaskData dynamicMaskData, RAIS.Common.MessageManagement.Message.ModificationType modificationType, RAIS.Common.MessageManagement.Message.ModificationType mainMaskModificationType, ref string actionMessage)
00770                 {
00771                         return RAIS.ApplicationLogicLayer.DynamicMaskManagement.SaveChanges(dynamicMaskData, modificationType, mainMaskModificationType, ref actionMessage);
00772                 }
00778         public static bool DeleteRecord(DynamicMaskData dynamicMaskData, ref string actionMessage)
00779                 {
00780                         return RAIS.ApplicationLogicLayer.DynamicMaskManagement.DeleteRecord(dynamicMaskData, ref actionMessage);
00781         }
00787                 public static void GetChildFiltersLookupValues(DynamicMaskData dynamicMaskData)
00788                 {
00789                         RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetChildFiltersLookupValues(dynamicMaskData);
00790                 }
00796                 public static void GetDataSetForListMask(DynamicMaskData dynamicMaskData)
00797                 {
00798                         RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetDataSetForListMask(dynamicMaskData);
00799                 }
00806                 public static bool DeleteRecordFromList(DynamicMaskData dynamicMaskData, string keyValue, ref string returnMessage)
00807                 {
00808                         return RAIS.ApplicationLogicLayer.DynamicMaskManagement.DeleteRecordFromList(dynamicMaskData, keyValue, ref returnMessage);
00809                 }
00810                 #endregion
00811                 //*********************************************************************
00812                 #region Public methods
00813 
00814                 static public string GetDynamicMaskReference(DynamicMaskData dynamicMaskData, object sender, int maskID, int parentID, int rowID, bool addRowMode)
00815                 {
00816                         int tabID = 0;
00817 
00818                         for (int i = 0; i < dynamicMaskData.DynamicMasks.Count; i++)
00819                                 if (dynamicMaskData.DynamicMasks[i].ControlName == ((HtmlAnchor)sender).ID)
00820                                 {
00821                                         tabID = i;
00822                                         break;
00823                                 }
00824 
00825                         if (tabID == 1)
00826                                 rowID = parentID;
00827 
00828                         return GetDynamicMaskReference(dynamicMaskData, maskID, tabID, parentID, rowID, addRowMode);
00829                 }
00830                 
00831                 static public string GetDynamicMaskReference(DynamicMaskData dynamicMaskData, int maskID, int tabID, int parentID, int rowID, bool addRowMode)
00832                 {
00833                         return string.Format("{0}?{1}={2}&{3}={4}&{5}={6}&{7}={8}&{9}={10}"
00834                                 , dynamicMaskData.DynamicMasks[tabID].Reference
00835                                 , Constants.MASK_ID_PARAMETER_NAME
00836                                 , maskID
00837                                 , Constants.TAB_ID_PARAMETER_NAME
00838                                 , tabID
00839                 , Constants.PARENT_ID_PARAMETER_NAME
00840                 , parentID
00841                 , Constants.ROW_ID_PARAMETER_NAME
00842                                 , rowID
00843                                 , Constants.ADD_ROW_FORM_MODE_PARAMETER_NAME
00844                                 , addRowMode
00845                                 );
00846                 }
00847 
00848                 static public string GetDynamicMaskMainReference(DynamicMaskData dynamicMaskData, int maskID)
00849                 {
00850                         return string.Format("{0}?{1}={2}"
00851                                 , dynamicMaskData.DynamicMasks[0].Reference
00852                                 , Constants.MASK_ID_PARAMETER_NAME
00853                                 , maskID
00854                                 );
00855                 }
00856 
00857                 static public UserManagement.AccessRight GetPageAccessRights(Page page, DynamicMaskData dynamicMaskData, int id)
00858                 {
00859                         UserManagement.AccessRight accessRight = null;
00860 
00861                         PageAccessRights pageAccessRights = (PageAccessRights)page.Session[UI.Common.Constants.PAGE_ACCESS_RIGHTS_TAG];
00862                         if (pageAccessRights != null)
00863                         {
00864                                 string key = GetDynamicMaskMainReference(dynamicMaskData, id);
00865 
00866                                 if (pageAccessRights.ContainsKey(key))
00867                                 {
00868                                         accessRight = pageAccessRights[key];
00869                                 }
00870                         }
00871 
00872                         return accessRight;
00873                 }
00874 
00875                 static public void SetPreselectedFilter(DynamicMaskData dynamicMaskData, Facility selectedFacility, Department selectedDepartment)
00876                 {
00877                         dynamicMaskData.SelectedFacilityID = (selectedFacility == null) ? 0 : selectedFacility.ID;
00878                         dynamicMaskData.SelectedFacilityName = (selectedFacility == null) ? "" : selectedFacility.Name;
00879 
00880                         dynamicMaskData.SelectedDepartmentID = (selectedDepartment == null) ? 0 : selectedDepartment.ID;
00881                         dynamicMaskData.SelectedDepartmentName = (selectedDepartment == null) ? "" : selectedDepartment.Name;
00882                 }
00883 
00884                 static public void SetPreselectedFilterText(DynamicMaskData dynamicMaskData, Label lblFacility, Label lblDepartment)
00885                 {
00886                         lblFacility.Text = dynamicMaskData.SelectedFacilityName;
00887                         lblDepartment.Text = dynamicMaskData.SelectedDepartmentName;
00888                 }
00889 
00890                 static public void SetFacilityFieldPreselectedValue(DynamicMaskData dynamicMaskData)
00891                 {
00892                         if (dynamicMaskData.SelectedFacilityID != 0)
00893                         {
00894                                 foreach (FieldData fieldData in dynamicMaskData.CurrentRowValues)
00895                                 {
00896                                         if (fieldData.Field.RelatedTable != null
00897                                                 && fieldData.Field.RelatedTable.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME)
00898                                         {
00899                                                 fieldData.CurrentLookupValue = dynamicMaskData.SelectedFacilityID;
00900                                                 fieldData.CurrentLookupText = dynamicMaskData.SelectedFacilityName;
00901                                                 fieldData.RaisedPostback = true;
00902                                                 break;
00903                                         }
00904                                 }
00905                         }
00906                 }
00907 
00908                 static public void SetDepartmentFieldPreselectedValue(DynamicMaskData dynamicMaskData)
00909                 {
00910                         if (dynamicMaskData.SelectedDepartmentID != 0)
00911                         {
00912                                 foreach (FieldData fieldData in dynamicMaskData.CurrentRowValues)
00913                                 {
00914                                         if (fieldData.Field.RelatedTable != null
00915                                                 && fieldData.Field.RelatedTable.Name == RAIS.Common.Constants.DEPARTMENT_PARAMETER_NAME)
00916                                         {
00917                                                 fieldData.CurrentLookupValue = dynamicMaskData.SelectedDepartmentID;
00918                                                 fieldData.CurrentLookupText = dynamicMaskData.SelectedDepartmentName;
00919                                                 fieldData.RaisedPostback = true;
00920                                                 break;
00921                                         }
00922                                 }
00923                         }
00924                 }
00925 
00926                 static public string GetNationalDateFormatString(bool withTime)
00927                 {
00928                         if (withTime)
00929                                 return string.Format(" ({0} HH:mm)"
00930                                         , System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern);
00931                         else
00932                                 return string.Format(" ({0})"
00933                                         , System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern);
00934                 }
00941                 public static bool ValidateFilterControlsValues(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, ref string returnMessage)
00942                 {
00943                         bool success = true;
00944                         int rowNumber = 0;
00945 
00946                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
00947                         {
00948                                 DynamicMaskFilterData filterData = kvp.Value;
00949 
00950                                 if (filterData.DynamicMaskFilter.VisibleOnForm)
00951                                 {
00952                                         if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.DatesRage)
00953                                         {
00954                                                 DateTime dateFrom;
00955                                                 DateTime dateUntil;
00956                                                 IFormatProvider culture = System.Globalization.CultureInfo.CurrentCulture;
00957 
00958                                                 TextBox textBoxFrom = (TextBox)table.Rows[rowNumber].Cells[1].Controls[0];
00959                                                 success &= DateTime.TryParse(textBoxFrom.Text, culture, DateTimeStyles.None, out dateFrom);
00960 
00961                                                 TextBox textBoxUntil = (TextBox)table.Rows[rowNumber].Cells[1].Controls[3];
00962                                                 success &= DateTime.TryParse(textBoxUntil.Text, culture, DateTimeStyles.None, out dateUntil);
00963 
00964                                                 if (!success)
00965                                                 {
00966                                                         returnMessage = RAIS.Common.Messages.WRONG_DATE_VALUE;
00967                                                         break;
00968                                                 }
00969 
00970                                                 // Restriction of SQL Server
00971                                                 if (dateFrom < filterData.SqlMinDateValue 
00972                                                         || dateUntil < filterData.SqlMinDateValue)
00973                                                 {
00974                                                         success = false;
00975                                                         returnMessage = string.Format(RAIS.Common.Messages.WRONG_MIN_DATE_VALUE, filterData.SqlMinDateValue.ToShortDateString());
00976                                                         break;
00977                                                 }
00978 
00979                                                 if (dateFrom > dateUntil)
00980                                                 {
00981                                                         success = false;
00982                                                         returnMessage = string.Format(RAIS.Common.Messages.WRONG_DATE_RANGE_VALUES, dateUntil.ToShortDateString(), dateFrom.ToShortDateString());
00983                                                         break;
00984                                                 }
00985                                         }
00986 
00987                                         rowNumber++;
00988                                 }
00989                         }
00990                         return success;
00991                 }
00992                 #endregion
00993                 //*********************************************************************
00994                 #region Private methods
00995                 static DynamicMaskFilterData FindFilterDataByControlName(DynamicMaskData dynamicMaskData, object sender)
00996                 {
00997                         DynamicMaskFilterData filterData = null;
00998 
00999                         string controlName = ((DropDownList)sender).ID;
01000 
01001                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
01002                         {
01003                                 if (kvp.Value.ControlName == controlName)
01004                                 {
01005                                         filterData = kvp.Value;
01006                                         break;
01007                                 }
01008                         }
01009 
01010                         return filterData;
01011                 }
01012 
01013                 static int GetFilterRowNumber(DynamicMaskData dynamicMaskData, DynamicMaskFilterData filterData)
01014                 {
01015                         int number = -1;
01016                         int i = 0;
01017                         foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData)
01018                         {
01019                                 if (kvp.Value == filterData)
01020                                 {
01021                                         number = i;
01022                                         break;
01023                                 }
01024                                 i++;
01025                         }
01026 
01027                         return number;
01028                 }
01029                 #endregion
01030         }
01031 }